home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / GFXFX2.ZIP / DOTS2.PAS < prev    next >
Pascal/Delphi Source File  |  1995-02-14  |  1KB  |  42 lines

  1.  
  2. program dots2; { DOTS2.PAS }
  3. { Good ol' pc effect ;-) by Bas van Gaalen }
  4. uses u_vga,u_pal,u_kb;
  5. const
  6.   dots=800;
  7.   slen1=1100; samp1=49; sofs1=50;
  8.   slen2=1200; samp2=39; sofs2=50;
  9.   dx1=3; dy1=5; xspd1=4; yspd1=2;
  10.   dx2=4; dy2=3; xspd2=2; yspd2=3;
  11. var
  12.   stab1:array[0..slen1] of byte;
  13.   stab2:array[0..slen2] of byte;
  14.  
  15. procedure plotter;
  16. var xst1,xst2,yst1,yst2,i,j,offset,onset:word;
  17. begin
  18.   xst1:=100; xst2:=800; yst1:=300; yst2:=700;
  19.   repeat
  20.     vretrace;
  21.     for i:=0 to dots do begin
  22.       offset:=((stab1[(yst1+i*dy1) mod slen1]+stab2[(yst2+i*dy2) mod slen2])*320)+
  23.         (stab1[(xst1+i*dx1) mod slen1])+(stab2[(xst2+i*dx2) mod slen2])+60;
  24.       onset:=((stab1[(yst1+yspd1+i*dy1) mod slen1]+stab2[(yst2+yspd2+i*dy2) mod slen2])*320)+
  25.         (stab1[(xst1+xspd1+i*dx1) mod slen1])+(stab2[(xst2+xspd2+i*dx2) mod slen2])+60;
  26.       mem[u_vidseg:offSet]:=0;
  27.       mem[u_vidseg:onSet]:=32+i mod 32;
  28.     end;
  29.     xst1:=(xst1+xspd1) mod slen1; yst1:=(yst1+yspd1) mod slen1;
  30.     xst2:=(xst2+xspd2) mod slen2; yst2:=(yst2+yspd2) mod slen2;
  31.   until keypressed;
  32. end;
  33.  
  34. var i:word;
  35. begin
  36.   setvideo($13);
  37.   for i:=0 to slen1 do stab1[i]:=round(sin(i*(4*pi)/slen1)*samp1)+sofs1;
  38.   for i:=0 to slen2 do stab2[i]:=round(sin(i*(4*pi)/slen2)*samp2)+sofs2;
  39.   plotter;
  40.   setvideo(u_lm);
  41. end.
  42.